import { CommentItem } from "@/bean/index"

function getCurrentDate() {
    const date = new Date();
    const year = date.getFullYear();
    const month = date.getMonth() + 1;
    const day = date.getDate();
    return `${year}-${month}-${day}`;
}

//监听滚动条位置，使用了闭包的写法封装了节流函数，实现了滚动条、点击事件的节流,优化了网页性能
//method:传入调用的方法名。mustRun:两者之间的间隔大于多少则必定执行.delay:如果点击过快，那么就设置一个定时器来触发函数。
function throttle(method: any, mustRun: any, delay: any) {
    //scroll方法中当间隔时间大于2s，do somthing执行一次
    let timer: any;//使用闭包，缓存startTime
    let startTime: any = new Date();
    return function () {
        const curTime: any = new Date();
        if (curTime - startTime >= mustRun) {//如果前后两次操作相隔时间超过mustRun,那么就会执行一次
            //console.log('立即执行了函数');
            method();
            startTime = curTime;//重置startTime
        } else {//操作间隔没有超过,那么就排队delay秒后执行一次
            clearTimeout(timer);
            timer = setTimeout(function () {
                //console.log('延时执行了函数')
                method();
            }, delay);
        }
    }
}

//传入数组对象和欲查询id，返回相应对象
export function deepFind(arr: CommentItem[], id: number) {
    let res:any = null
    //使用了树的深度优先搜索算法
    function deepFindSub(arr: CommentItem[], id: number) {
        //遍历子节点
        arr.forEach((item: CommentItem) => {
            //id相同，返回对象
            if (item.id === id) {
                res = item
            }
            //id不同，继续遍历子树    
            else if (item.children && item.children.length > 0) {
                res = deepFindSub(item.children, id)
            }
        })
        return res
    }
    return deepFindSub(arr, id)
}




export default {
    getCurrentDate,
    throttle,
    deepFind
}